#include "mainwindow.h"
#include "ui_mainwindow.h"






/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



void MainWindow::changed_myTracker_Frames_INI_FIN( QString caller )   // buttonUpdt // buttonReset // readFiles // next // prev // slider // auto // else
{

                ///////////////////////////
                ///////////////////////////
                myTracker->CLEAR_Tracker();
                ///////////////////////////
                ///////////////////////////


                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                if     ((caller == "runTracker") ||
                        (caller == "buttonUpdt") ||
                        (caller == "readFiles"))        myTracker->starting_FrameTracker_INI  = ui->myTextEdit_myTracker_Frame_INI->toPlainText().toInt();
                else if (caller == "buttonReset")       myTracker->starting_FrameTracker_INI  = 0;
                else if (caller == "next")              myTracker->starting_FrameTracker_INI += 1;
                else if (caller == "prev")              myTracker->starting_FrameTracker_INI -= 1;
                else if (caller == "slider")            myTracker->starting_FrameTracker_INI  = ui->mySliderOpenGL->value();
                else             /*"auto"*/             {}

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                if (ui->myCheck_FingertipDetections->isChecked())
                {
                        myTracker->FEAT_Skinnnnn.fingerTips.READ_and_FILTER_detections_ALL_cameras( myTracker->sequence.cameraSet.totalCameras,
                                                                                                    myTracker->starting_FrameTracker_INI,
                                                                                                    3.0 );

                }

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                int WorstCaseSTART = 0;
                int WorstCaseENDDD = myTracker->sequence.totalAllignedFrames - 1;

                if (myTracker->starting_FrameTracker_INI < WorstCaseSTART)   {   myTracker->starting_FrameTracker_INI = WorstCaseSTART;               }
                if (myTracker->starting_FrameTracker_INI > WorstCaseENDDD)   {   on_myButton_Reset_clicked();                               return;   }

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                if (myTypesBackground.Blank==false || ui->myCheckBox_PCL->isChecked())      myTracker->currentFrameNumberSET( myTracker->starting_FrameTracker_INI, true, true  );
                else                                                                        myTracker->currentFrameNumberSET( myTracker->starting_FrameTracker_INI, true, false );

                if (ui->myCheckBox_PCL->isChecked())                                        myTracker->BackProject_Depth_2_PCL();

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////     JUST LABELS & SLIDER update   /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                ui->myTextEdit_myTracker_Frame_INI->setPlainText( QString::number(myTracker->starting_FrameTracker_INI));

                if (isOpenglSliderMovingXeriFLAG == false)      ui->mySliderOpenGL->setValue( myTracker->starting_FrameTracker_INI ); // gia na mi triggrarei!

                update_ONLYLabels_OfSlider_SEQ_LIMITS_AND_CURR_FR( myTracker->starting_FrameTracker_INI );

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

}


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


void MainWindow::on_mySliderOpenGL_actionTriggered(int action)
{
                                                                                                                                                     /////////////////////////////////////
                                                                                                                                                     isOpenglSliderMovingXeriFLAG = true;
                                                                                                                                                     /////////////////////////////////////

        int currFrameOpenGL = ui->mySliderOpenGL->value();

        update_ONLYLabels_OfSlider_SEQ_LIMITS_AND_CURR_FR( currFrameOpenGL );

        changed_myTracker_Frames_INI_FIN( "slider" );   // kanei k currentFrameNumberSET eswterika!!!!!!

        ///////////////////////////////////////
        ui->myOpenGLWidget->cameraTranslate(0); // to update centerOfRotation vector !!!
        ///////////////////////////////////////

                                                                                                                                                     /////////////////////////////////////
                                                                                                                                                     isOpenglSliderMovingXeriFLAG = false;
                                                                                                                                                     /////////////////////////////////////

}

                                                                                                                                                                                                                                    //////////////////////////////////////
void MainWindow::on_myButton_OpenGL_Next_clicked()         {     isOpenglSliderMovingXeriFLAG = false;     isNextPrevPressedFLAG = true;     changed_myTracker_Frames_INI_FIN( "next" );       isNextPrevPressedFLAG = false;       ui->myOpenGLWidget->cameraTranslate(0);     }
void MainWindow::on_myButton_OpenGL_Previous_clicked()     {     isOpenglSliderMovingXeriFLAG = false;     isNextPrevPressedFLAG = true;     changed_myTracker_Frames_INI_FIN( "prev" );       isNextPrevPressedFLAG = false;       ui->myOpenGLWidget->cameraTranslate(0);     }
                                                                                                                                                                                                                                    //////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


void MainWindow::on_myButton_Reset_clicked()   {   changed_myTracker_Frames_INI_FIN( "buttonReset" );   }
void MainWindow::on_myButton_upd_clicked()     {   changed_myTracker_Frames_INI_FIN( "buttonUpdt"  );   }


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


